from math import *
from PublicReference.base import *

# class 主动技能(主动技能):
#     def 等效CD(self, 武器类型):
#         if 武器类型 == '图腾':
#             return round(self.CD / self.恢复 * 0.9, 1)
#         if 武器类型 == '镰刀':
#             return round(self.CD / self.恢复 * 0.95, 1)
#         if 武器类型 == '战斧':
#             return round(self.CD / self.恢复 * 1.1, 1)
#         if 武器类型 == '十字架':
#             return round(self.CD / self.恢复 * 1, 1)
#         if 武器类型 == '念珠':
#             return round(self.CD / self.恢复 * 0.95, 1)

class 神启·蓝拳圣使技能0(主动技能):
    名称 = '直拳冲击'
    所在等级 = 5
    等级上限 = 60
    基础等级 = 50
    基础 = 432.9387 * 1.13
    成长 = 49.0612 * 1.13
    基础2 = 651.4489 * 1.13
    成长2 = 73.5510 * 1.13
    攻击次数2 = 1
    CD = 3.0
    TP成长 = 0.08
    TP上限 = 5

class 神启·蓝拳圣使技能1(被动技能):
    名称 = '意念驱动'
    所在等级 = 15
    等级上限 = 20
    基础等级 = 10
    是否主动 = 1
    冷却关联技能 = ['直拳冲击', '圣拳锤击','俯冲翔拳','俯冲直拳','俯冲腹拳','瞬拳','圣拳连击','神圣反击','破碎之锤','漩涡重拳','刺拳猛击','神圣组合拳','极速飓风拳','破碎之拳','破坏之拳','仲裁怒击','超重拳','浩势审判']    
    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.013 + 0.02 * self.等级, 5)

    def CD缩减倍率(self, 武器类型):
        if 武器类型 == '图腾':
            return 0.9
        else:
            return 1.0

class 神启·蓝拳圣使技能2(被动技能):
    名称 = '技巧精通'
    所在等级 = 20
    等级上限 = 20
    基础等级 = 10
    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        elif self.等级 <= 10:
            return round(1.00 + 0.01 * self.等级, 5)
        else:
            return round(1.10 + 0.015 * (self.等级 - 10), 5)

class 神启·蓝拳圣使技能3(主动技能):
    名称 = '圣拳锤击'
    所在等级 = 15
    等级上限 = 60
    基础等级 = 43
    基础 = 213.8095 * 1.13
    成长 = 24.1904 * 1.13
    基础2 = 1927.3095 * 1.13
    成长2 = 217.6904 * 1.13
    攻击次数2 = 1
    CD = 5.0
    TP成长 = 0.1
    TP上限 = 5

class 神启·蓝拳圣使技能4(主动技能):
    名称 = '俯冲翔拳'
    所在等级 = 20
    等级上限 = 60
    基础等级 = 46
    基础 = 1501.3778 * 1.1 * 1.169
    成长 = 169.2222 * 1.1 * 1.169
    CD = 3.5
    TP成长 = 0.10
    TP上限 = 5

class 神启·蓝拳圣使技能5(主动技能):
    名称 = '俯冲直拳'
    所在等级 = 20
    等级上限 = 60
    基础等级 = 46
    基础 = 1492.4667 * 1.1 * 1.173
    成长 = 168.5333 * 1.1 * 1.173
    CD = 3.5
    TP成长 = 0.10
    TP上限 = 5

class 神启·蓝拳圣使技能6(主动技能):
    名称 = '俯冲腹拳'
    所在等级 = 20
    等级上限 = 60
    基础等级 = 43
    基础 = 1630.0238 * 1.1 * 1.151
    成长 = 183.9761 * 1.1 * 1.151
    CD = 3.5
    TP成长 = 0.10
    TP上限 = 5

class 神启·蓝拳圣使技能7(主动技能):
    名称 = '瞬拳'
    所在等级 = 25
    等级上限 = 60
    基础等级 = 41
    基础 = 1667.6 * 1.13
    成长 = 188.4 * 1.13
    基础2 = 416.925 * 1.13
    成长2 = 47.075 * 1.13
    攻击次数2 = 1
    CD = 4
    TP成长 = 0.10
    TP上限 = 5


class 神启·蓝拳圣使技能8(主动技能):
    名称 = '圣拳连击'
    所在等级 = 25
    等级上限 = 60
    基础等级 = 41
    基础 = 832.85 * 1.132
    成长 = 94.15 * 1.132
    基础2 = 1018.95 * 1.132
    成长2 = 115.05 * 1.132
    攻击次数2 = 1
    基础3 = 1235.55 * 1.132
    成长3 = 139.45 * 1.132
    攻击次数3 = 1
    CD = 7.0
    TP成长 = 0.10
    TP上限 = 5


class 神启·蓝拳圣使技能9(主动技能):
    名称 = '神圣反击'
    所在等级 = 30
    等级上限 = 11
    基础等级 = 1
    基础 = 0
    成长 = 303
    CD = 6

class 神启·蓝拳圣使技能10(主动技能):
    名称 = '破碎之锤'
    所在等级 = 30
    等级上限 = 60
    基础等级 = 38
    基础 = 2094.4864 * 1.13
    成长 = 236.5135 * 1.13
    基础2 = 1396.3243 * 1.13
    成长2 = 157.6756 * 1.13
    攻击次数2 = 1
    CD = 6.0
    TP成长 = 0.10
    TP上限 = 5


class 神启·蓝拳圣使技能11(主动技能):
    名称 = '漩涡重拳'
    所在等级 = 35
    等级上限 = 60
    基础等级 = 36
    基础 = 3764.2857 * 1.131
    成长 = 425.7142 * 1.131
    基础2 = 5655.5428 * 1.131
    成长2 = 638.4571 * 1.131
    攻击次数2 = 1
    CD = 20
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    护石选项 = ['魔界', '圣痕']
    def 装备护石(self, x):
        if x == 0:
            self.基础 *= 1.4
            self.成长 *= 1.4
            self.基础2 *= 1.2
            self.成长2 *= 1.2
        elif x == 1:
            self.基础 *= 1.4
            self.成长 *= 1.4
            self.基础2 *= 1.35
            self.成长2 *= 1.35

class 神启·蓝拳圣使技能12(主动技能):
    名称 = '刺拳猛击'
    所在等级 = 35
    等级上限 = 60
    基础等级 = 36
    基础 = 384.5142 * 1.128
    成长 = 43.48571 * 1.128
    攻击次数 = 10
    基础2 = 1149.1714 * 1.128
    成长2 = 129.8285 * 1.128
    攻击次数2 = 1
    基础3 = 746.6
    成长3 = 84.4
    攻击次数3 = 1
    CD = 10
    TP成长 = 0
    TP上限 = 5

class 神启·蓝拳圣使技能13(主动技能):
    名称 = '神圣组合拳'
    所在等级 = 40
    等级上限 = 60
    基础等级 = 33
    基础 = 2068.5 * 1.13
    成长 = 233.5 * 1.13
    基础2 = 2697.4062 * 1.13
    成长2 = 304.5937 * 1.13
    攻击次数2 = 1
    基础3 = 4226.8125 * 1.13
    成长3 = 477.1874 * 1.13
    攻击次数3 = 1
    CD = 16
    TP成长 = 0.1
    TP上限 = 5
    是否有护石 = 1
    护石选项 = ['魔界', '圣痕']
    def 装备护石(self, x):
        if x == 0:
            self.基础 *= 1.17
            self.成长 *= 1.17
            self.基础2 *= 1.17
            self.成长2 *= 1.17
            self.基础3 *= 1.17
            self.成长3 *= 1.17
        elif x == 1:
            self.基础 *= 1.26
            self.成长 *= 1.26
            self.基础2 *= 1.26
            self.成长2 *= 1.26
            self.基础3 *= 1.26
            self.成长3 *= 1.26

class 神启·蓝拳圣使技能14(主动技能):
    名称 = '极速飓风拳'
    所在等级 = 45
    等级上限 = 60
    基础等级 = 31
    基础 = 1389.1 * 1.13
    成长 = 156.9 * 1.13
    攻击次数 = 10
    基础2 = 5954.6333 * 1.13
    成长2 = 672.3666 * 1.13
    攻击次数2 = 1
    CD = 45
    TP成长 = 0.1
    TP上限 = 5
    是否有护石 = 1
    护石选项 = ['魔界', '圣痕']
    def 装备护石(self, x):
        if x == 0:
            self.基础 *= 0.97
            self.成长 *= 0.97
            self.攻击次数 = 6
            self.攻击次数2 = 0
            self.CD = 15
            self.基础释放次数 = 2
        elif x == 1:
            self.基础 *= 1.04
            self.成长 *= 1.04
            self.攻击次数 = 6
            self.攻击次数2 = 0
            self.CD = 15
            self.基础释放次数 = 2

class 神启·蓝拳圣使技能15(被动技能):
    名称 = '干涸之泉'
    所在等级 = 48
    等级上限 = 40
    基础等级 = 20
    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.025 + 0.02 * self.等级, 5)

class 神启·蓝拳圣使技能16(主动技能):
    名称 = '泯灭神击'
    所在等级 = 50
    等级上限 = 40
    基础等级 = 12
    基础 = 40394 * 1.1 * 1.136
    成长 = 12198 * 1.1 * 1.136
    CD = 145.0

class 神启·蓝拳圣使技能17(主动技能):
    名称 = '破碎之拳'
    所在等级 = 60
    等级上限 = 40
    基础等级 = 23
    基础 = 12525.9091 * 1.13
    成长 = 1414.0909 * 1.13
    基础2 = 3131.3636 * 1.13
    成长2 = 353.6363 * 1.13
    攻击次数2 = 1
    基础3 = 5218.6363 * 1.13
    成长3 = 589.3636 * 1.13
    攻击次数3 = 1
    CD = 35.0
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    护石选项 = ['魔界', '圣痕']
    def 装备护石(self, x):
        if x == 0:
            self.基础 *= 1.3
            self.成长 *= 1.3
            self.基础3 *= 1.28
            self.基础3 *= 1.28
            self.CD *= 0.88
        elif x == 1:
            self.基础 *= 1.3
            self.成长 *= 1.3
            self.基础3 *= 1.78
            self.基础3 *= 1.78
            self.CD *= 0.88

class 神启·蓝拳圣使技能18(主动技能):
    名称 = '破坏之拳'
    所在等级 = 70
    等级上限 = 40
    基础等级 = 18
    基础 = 25962.4705 * 1.13
    成长 = 2931.5294 * 1.13
    CD = 40.0
    TP成长 = 0.10
    TP上限 = 5
    是否有护石 = 1
    护石选项 = ['魔界', '圣痕']
    def 装备护石(self, x):
        if x == 0:
            self.基础 *= 1.2
            self.成长 *= 1.2
        elif x == 1:
            self.基础 *= 1.28
            self.成长 *= 1.28

class 神启·蓝拳圣使技能19(主动技能):
    名称 = '仲裁怒击'
    所在等级 = 75
    等级上限 = 40
    基础等级 = 16
    基础 = 50485.8 * 1.116
    成长 = 5700.2 * 1.116
    CD = 40.0
    是否有护石 = 1
    护石选项 = ['圣痕']
    def 装备护石(self, x):
        if x == 0:
            self.基础 *= 1.36
            self.成长 *= 1.36

class 神启·蓝拳圣使技能20(被动技能):
    名称 = '正义惩戒'
    所在等级 = 75
    等级上限 = 40
    基础等级 = 11
    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.22 + 0.02 * self.等级, 5)

class 神启·蓝拳圣使技能21(主动技能):
    名称 = '超重拳'
    所在等级 = 80
    等级上限 = 40
    基础等级 = 13
    基础 = 56623.16667 * 1.132
    成长 = 6392.83333 * 1.132
    CD = 40.0
    是否有护石 = 1
    护石选项 = ['圣痕']
    def 装备护石(self, x):
        if x == 0:
            self.基础 *= 1.35
            self.成长 *= 1.35

class 神启·蓝拳圣使技能22(主动技能):
    名称 = '制裁：怒火疾风'
    所在等级 = 85
    等级上限 = 40
    基础等级 = 5
    基础 = 100940 * 1.192
    成长 = 30458 * 1.192
    CD = 180.0

class 神启·蓝拳圣使技能23(被动技能):
    名称 = '唯一正义'
    所在等级 = 95
    等级上限 = 40
    基础等级 = 4
    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)

class 神启·蓝拳圣使技能24(主动技能):
    名称 = '浩势审判'
    所在等级 = 95
    等级上限 = 40
    基础等级 = 6
    基础 = 22712.6 / 1.1
    成长 = 2564.4 / 1.1
    基础2 = 1702.6 / 1.1
    成长2 = 192.4 / 1.1
    攻击次数2 = 20
    基础3 = 56782 / 1.1
    成长3 = 6411 / 1.1
    攻击次数3 = 1
    CD = 60.0

class 神启·蓝拳圣使技能25(主动技能):
    名称 = '正义执行：雷梅迪奥斯圣座'
    所在等级 = 100
    等级上限 = 40
    基础等级 = 2
    基础 = 135155 / 1.1
    成长 = 40802 / 1.1
    基础2 = 202734 / 1.1
    成长2 = 61202 / 1.1
    攻击次数2 = 1
    CD = 290.0

    关联技能 = ['无']

    def 加成倍率(self, 武器类型):
        return 0.0

神启·蓝拳圣使技能列表 = []
i = 0
while i >= 0:
    try:
        exec('神启·蓝拳圣使技能列表.append(神启·蓝拳圣使技能'+str(i)+'())')
        i += 1
    except:
        i = -1

神启·蓝拳圣使技能序号 = dict()
for i in range(len(神启·蓝拳圣使技能列表)):
    神启·蓝拳圣使技能序号[神启·蓝拳圣使技能列表[i].名称] = i

神启·蓝拳圣使一觉序号 = 0
神启·蓝拳圣使二觉序号 = 0
神启·蓝拳圣使三觉序号 = 0
for i in 神启·蓝拳圣使技能列表:
    if i.所在等级 == 50:
        神启·蓝拳圣使一觉序号 = 神启·蓝拳圣使技能序号[i.名称]
    if i.所在等级 == 85:
        神启·蓝拳圣使二觉序号 = 神启·蓝拳圣使技能序号[i.名称]
    if i.所在等级 == 100:
        神启·蓝拳圣使三觉序号 = 神启·蓝拳圣使技能序号[i.名称]

神启·蓝拳圣使护石选项 = ['无']
for i in 神启·蓝拳圣使技能列表:
    if i.是否有伤害 == 1 and i.是否有护石 == 1:
        神启·蓝拳圣使护石选项.append(i.名称)

神启·蓝拳圣使符文选项 = ['无']
for i in 神启·蓝拳圣使技能列表:
    if i.所在等级 >= 20 and i.所在等级 <= 80 and i.所在等级 != 50 and i.是否有伤害 == 1:
        神启·蓝拳圣使符文选项.append(i.名称)

class 神启·蓝拳圣使角色属性(角色属性):

    实际名称 = '神启·蓝拳圣使'
    角色 = '圣职者(男)'
    职业 = '蓝拳圣使'

    武器选项 = ['图腾','战斧','镰刀','念珠','十字架']
    
    类型选择 = ['物理百分比']
    
    #默认
    类型 = '物理百分比'
    防具类型 = '轻甲'
    防具精通属性 = ['力量']

    主BUFF = 1.99

    def __init__(self):
        基础属性输入(self)
        self.技能栏= deepcopy(神启·蓝拳圣使技能列表)
        self.技能序号= deepcopy(神启·蓝拳圣使技能序号)

    def 被动倍率计算(self):
        super().被动倍率计算()
        #神圣反击倍率与腹拳一样，但在修炼场手动开只有80%
        self.技能栏[self.技能序号['神圣反击']].基础 = ((self.技能栏[self.技能序号['俯冲腹拳']].基础 * 1.1) + (self.技能栏[self.技能序号['俯冲腹拳']].等级 * self.技能栏[self.技能序号['俯冲腹拳']].成长 * 1.1) * (1 + self.技能栏[self.技能序号['俯冲腹拳']].TP等级 * 0.1)) * 0.8

        self.技能栏[self.技能序号['刺拳猛击']].攻击次数 += self.技能栏[self.技能序号['刺拳猛击']].TP等级 * 1
        self.技能栏[self.技能序号['刺拳猛击']].基础2 *= 1 + self.技能栏[self.技能序号['刺拳猛击']].TP等级 * 0.1
        self.技能栏[self.技能序号['刺拳猛击']].成长2 *= 1 + self.技能栏[self.技能序号['刺拳猛击']].TP等级 * 0.1
        self.技能栏[self.技能序号['刺拳猛击']].基础3 *= 1 + self.技能栏[self.技能序号['刺拳猛击']].TP等级 * 0.1
        self.技能栏[self.技能序号['刺拳猛击']].成长3 *= 1 + self.技能栏[self.技能序号['刺拳猛击']].TP等级 * 0.1

class 神启·蓝拳圣使(角色窗口):
    def 窗口属性输入(self):
        self.初始属性 = 神启·蓝拳圣使角色属性()
        self.角色属性A = 神启·蓝拳圣使角色属性()
        self.角色属性B = 神启·蓝拳圣使角色属性()
        self.一觉序号 = 神启·蓝拳圣使一觉序号
        self.二觉序号 = 神启·蓝拳圣使二觉序号
        self.三觉序号 = 神启·蓝拳圣使三觉序号
        self.护石选项 = deepcopy(神启·蓝拳圣使护石选项)
        self.符文选项 = deepcopy(神启·蓝拳圣使符文选项)


